Ext.onReady(function() {
	Ext.BLANK_IMAGE_URL = 'ext/resources/images/default/s.gif';

	Ext.QuickTips.init();

    //登陆
	function logon() {
		

		Ext.Msg.prompt('登陆窗口', '输入你的名字', function(btn, text) {
            //输入确定 并名字不为空
			if (btn == 'ok' && text.trim().length > 0) {
                //该用户的用户名 为全局变量 就一个
                username=text.trim();
                accountID = text.trim();       
                
				var tree = new Ext.tree.TreePanel({
					id : 'im-tree',
					title : '在线用户',
					loader : new Ext.tree.TreeLoader(),
					rootVisible : false,
					lines : false,
					autoScroll : true,
					
					root : new Ext.tree.AsyncTreeNode({
								text : 'Online',
								children : []
							})
				});
				tree.on('dblclick', function(node) {
							showChatWindow(node);
						});
						
				var textWin = new Ext.Window({
					layout : 'fit',
					title : '消息',
					width : 210,
					height : 400,
					maximizable : true,
					colseAction : 'hide',
					html : '<textarea id="message" name="message"  style="height:300; width:100px" ></textarea><textarea id="message2" name="message2"  style="height:300; width:100px" ></textarea>'
				})
				textWin.hide();	
				
				var mainUI = new Ext.Window({
					id : 'acc-win',
					title : ' 即时通讯-- ' + username,
					width : 250,
					height : 400,
					renderTo : document.body,
					iconCls : 'accordion',
					shim : false,
					animCollapse : false,
					constrainHeader : true,
					closable : false,
					draggable : true,
                    x:100,
                    y:100,
					tbar : [{
								tooltip : {
									title : '刷新用户',
									text : '重新检测在线用户'
								},
								iconCls : 'connect',
								handler : function() {
									/*
									var tree = Ext.getCmp('im-tree');
									tree.body.mask('Loading','x-mask-loading');
									tree.root.reload();
									tree.root.collapse(true, false);
									setTimeout(function() { // mimic a
												// server
												// call
												tree.body.unmask();
												tree.root.expand(true, true);
											}, 1000);
											*/
									
								}
							}, '-', {
								tooltip : '添加好友',
								iconCls : 'user-add',
								handler : function() {
									Ext.MessageBox.prompt("添加好友","请输入你要添加的用户名",function(btn,text){
										if (btn == 'ok' && text.trim().length > 0) {
											var addUsername = text.trim();
											if(addUsername == accountID){
												Ext.MessageBox.alert('添加失败', "您无法添加自己为好友");
											}
											var isHad = false;
											Ext.getCmp('im-tree').root.eachChild(function (child){
												if(child.text.trim() == addUsername){
													isHad = true;
													return;
												}
											});
											if(isHad){
												Ext.MessageBox.alert('无需添加', "该好友已经在您的好友列表中");
												return false;
											}
											Ext.Ajax.request({
								                url: 'ManageListener.test',
								                params: { addUserName:addUsername },
								                method: 'post',
								                success: function (response, options) {
								                	if(response.responseText !="no-user"){
								                		var addUserId = response.responseText.trim();
								                		//Ext.MessageBox.alert('成功', '该用户目前在线，使用的ID值为: ' + addUserId);
								                		PL.publish("/user/friend","p_to=" + addUserId+ "&manage_status=add_request&name="+accountID);
								                		Ext.MessageBox.alert('发送成功', "申请信息已成功发送");
								                	}else{
								                		Ext.MessageBox.alert('失败', "不存在该用户或该用户并不在线");
								                	}
								                   
								                },
								                failure: function (response, options) {
								                    Ext.MessageBox.alert('失败', '请求超时或网络故障,错误编号：' + response.status);
								                }
								            });
										}
									});
									//alert("添加好友！");
								}
							}, ' ', {
								tooltip : '删除好友',
								iconCls : 'user-delete',
								handler : function() {
									var selectNode = Ext.getCmp('im-tree').getSelectionModel().getSelectedNode();
									if(confirm("确定要从好友列表中删除吗？")){
										PL.publish("/user/friend","p_to=" + selectNode.id+ "&manage_status=del_request&name="+accountID);
									}
									Ext.getCmp('im-tree').root.removeChild(selectNode);
								}
							}],

					layout : 'accordion',
					border : false,
					layoutConfig : {
						animate : false
					},
					items : [tree]
				});
				mainUI.show();
                //开始与服务器通信
				init_friendlyTree();
                joinListen();
			}else{
                //输入名字失败的话  再次打开登录窗口
                logon();
            }
		});
	}
	function init_friendlyTree(){
    	var friendlyList = [{name:'111'},{name:'222'},{name:'333'},{name:'444'},{name:'555'}]; 
    	var friend = null;
    	for(var i=0;i<friendlyList.length;i++){
    		friend = friendlyList[i];
    		var node4add=new Ext.tree.TreeNode({
                        id:friend.name,
                        text : friend.name,
                        iconCls : 'user',
                        leaf : true,
                        disabled:true
                    });
    		node4add.setText(node4add.text);
    		//alert(node4add.disabled);
    		Ext.getCmp('im-tree').root.appendChild(node4add);
    	}
        var friendTree= Ext.getCmp('im-tree');
    }
    function user_on(){
    	if (event.getSubject() == '/user/login' && Ext.getCmp('im-tree').getNodeById(event.get('p_from')) == null) {
    		//当该用户不在线上，再判断是否属于好友
    		if(Ext.getCmp('im-tree').getNodeById(event.get('name')) != null){
    			var myFriend = Ext.getCmp('im-tree').getNodeById(event.get('name'));
    			myFriend.id=event.get('p_from');
    			myFriend.disabled=false;
    			//修改用户颜色
    			//修改用户排序
    			
    			 //给节点添加一个时间戳属性，以后用来判断是否在线  这个属性会不断刷新  长时间不刷新就说明掉了
    			myFriend.aliveTS=event.get('p_time');
    			myFriend.accountID=event.get('accountID');
    			//Ext.getCmp('im-tree').root.appendChild(node4add);
	            new Ext.tree.TreeSorter(Ext.getCmp('im-tree'),{property:"text",dir:"asc"},accountID);
	            
	            var t=new Ext.ToolTip({
	        		target: 'mainUI',
	        		dismissDelay: 10000 ,
	        		html: event.get('name')+'['+event.get('accountID')+']上线了'
	    		});
	    		t.showAt([50,80+Ext.getCmp('im-tree').root.indexOf(myFriend)*20]);
    		}
            //Ext.get('message').set({value : event.get('name')});
        }else if(event.getSubject() == '/user/login' 
                && Ext.getCmp('im-tree').getNodeById(event.get('p_from')) != null ){
                //如果是登陆的消息 并且不是自己发出的 并且 树中有这个id的节点  就更新他的在线时间戳
                Ext.getCmp('im-tree').getNodeById(event.get('p_from')).aliveTS=event.get('p_time');
        }
    }
    
	logon();
});
